// #ifdef APP-PLUS
import appChooseFile from './chooseFile.js';
import copyPathToSandboxPath from './copyPathToSandboxPath.js';
// #endif

// 保存文件到临时路径
function downloadFile(url) {
	return new Promise((resolve, reject) => {
		uni.downloadFile({
			url,
			success: res => {
				resolve(res);
			},
			fail: err => {
				uni.showToast({
					title: '保存失败',
					icon: 'error'
				});
				reject(err);
				console.log(err, '保存文件到临时路径失败')
			}
		});
	})
}
// 保存图片
function saveImage(filePath) {
	uni.saveImageToPhotosAlbum({
		filePath,
		success: () => {
			uni.showToast({
				title: '保存成功',
				icon: 'success'
			})
		},
		fail: err => {
			uni.showToast({
				title: '保存失败',
				icon: 'error'
			})
			console.log(err, '保存图片到本地失败')
		}
	});
}

// 保存视频
function saveVideo(filePath) {
	uni.saveVideoToPhotosAlbum({
		filePath,
		success: () => {
			uni.showToast({
				title: '保存成功',
				icon: 'success'
			})
		},
		fail: err => {
			uni.showToast({
				title: '保存失败',
				icon: 'error'
			})
			console.log(err, '保存视频到本地失败')
		}
	});
}

// 预览图片
function previewImage(urls, current) {
	uni.previewImage({
		current,
		urls,
		longPressActions: {
			itemList: ['发送给朋友', '保存图片', '收藏'],
			success: function (data) {
				console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
			},
			fail: function (err) {
				console.log(err.errMsg);
			}
		},
		success: () => {
			console.log('预览图片成功')
		},
		fail: err => {
			console.log(err, '预览图片失败')
		}
	})
}

// 预览文件
function openDocument(url) {
	downloadFile(url).then(res => {
		uni.openDocument({
			filePath: res.tempFilePath,
			fileType: url.split('.')[url.split('.').length - 1],
			success: () => {
				console.log('预览文件成功')
			},
			fail: err => {
				console.log(err, '预览文件失败')
			}
		});
	});
}

// 下载文件
function saveFile(url, name, data) {
	downloadFile(url).then(res => {
		if (res.header && res.header['Content-Type'].indexOf('image') > -1) {
			// 图片
			saveImage(res.tempFilePath);
		} else if (res.header && res.header['Content-Type'].indexOf('video') > -1) {
			// 视频
			saveVideo(res.tempFilePath);
		} else {
			// #ifdef MP-WEIXIN
			uni.showToast({
				title: '小程序端不能下载合同',
				icon: 'none'
			});

			// #endif
			// #ifdef APP-PLUS
			plusDownload(url)

			// #endif

			// uni.showLoading({
			// 	title: '保存中...',
			// 	mask: true
			// });
			// name = name ? name + url.split('.')[url.split('.').length - 1] : url.split('/')[url.split('/')
			// 	.length - 1]
			// let dtask = plus.downloader.createDownload(url, {
			// 	// filename: `file://storage/emulated/0/Download/${name}`
			// }, (d, status) => {
			// 	console.log('%%', d, status)
			// 	//d为下载的文件对象
			// 	if (status == 200) {
			// 		uni.showToast({
			// 			icon: 'none',
			// 			mask: true,
			// 			title: `已保存到文件夹：/Download/${d.filename.split('/Download/')[1]}`, //保存路径
			// 			duration: 3000,
			// 		});
			// 		//下载成功,d.filename是文件在保存在本地的相对路径，使用下面的API可转为平台绝对路径
			// 		let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
			// 		setTimeout(() => {
			// 			plus.runtime.openFile(d.filename); //选择软件打开文件
			// 		}, 1000)
			// 	} else {
			// 		//下载失败
			// 		plus.downloader.clear(); //清除下载任务
			// 		uni.showToast({
			// 			icon: 'none',
			// 			mask: true,
			// 			title: '下载失败，请稍后重试',
			// 		});
			// 	}
			// });
			// dtask.start();
		}
	});
}

// 选择文件
function chooseFile(count) {
	return new Promise(function (resolve) {
		// #ifdef APP-PLUS
		const systemInfo = uni.getSystemInfoSync();
		if (systemInfo.system.search('IOS') > -1) {
			copyPathToSandboxPath().then(res => {
				console.log(res, 'IOS选择文件')
				resolve([res]);
			});
		} else {
			appChooseFile(url => {
				const arr = [{
					path: url,
					name: url.split('/')[url.split('/').length - 1]
				}];
				resolve(arr);
			});
		}
		// #endif
		// #ifdef MP-WEIXIN
		wx.chooseMessageFile({
			count,
			type: 'file',
			success: res => {
				resolve(res.tempFiles);
			},
			fail: err => {
				console.log(err);
			}
		});
		// #endif
	});
}



//PLUS-APP封装下载

let _dtask = ''

function plusDownload(data) {
	//拦截多次下载请求
	uni.showLoading({
		title: '下载中...'
	});
	let downloaderOptions = {}
	_dtask = plus.downloader.createDownload(data, {
		...downloaderOptions //利用保存路径，实现下载文件的重命名
	}, (d, status) => {
		// 下载完成
		if (status == 200) {
			uni.showToast({
				title: '下载成功'
			})
			uni.hideLoading()
		} else {
			_dtask.clear() //清除下载器
			uni.showToast({
				title: '下载失败',
				icon: 'error'
			})
		}
	});
	_dtask.start();
}


export default {
	downloadFile,
	saveImage,
	saveVideo,
	previewImage,
	openDocument,
	saveFile,
	chooseFile
}